万字解读 | A轮就融资¥3亿+的MotherDuck到底是个啥?
自1960年代数据库管理系统DBMS诞生以来,其成为了软件公司的巨大营收和净利润来源。1980年代,基于读写程度、使用场景的不同,DBMS衍生出了OLTP和OLAP两个主要分支,而前者一般被直接叫做数据库(Database, DB)、后者一般被叫做数据仓库或数仓(Data Warehouse, DW)。
1990s,单点式OLAP开始提供数据立方体(Data Cube),方便为商业智能、决策支持提供切片、旋转、下钻等分析操作。进入21世纪后,Vertica, Greenplum, ParAccel等面向结构化数据、Shared-Nothing/MPP架构的分布式OLAP兴起,与此同时,面向半结构化数据的Hadoop和MapReduce生态也逐渐声势浩大。
目前主流的数仓或大数据产品,整体上分为本地部署On-premises和公有云Cloud两类,前者以Teradata和Cloudera CDH为代表,后者以Snowflake、BigQuery、Redshift和各大公有云厂商的EMR产品为代表。而由于私有化的定制和服务的高昂成本,以及公有云的弹性、标准化、规模效应,尽管整个行业目前仍以私有化为主,但又呈现出私有化厂商式微、云上供应商规模增大的趋势。
无论是私有化还是公有云,无论是行业巨头还是创业公司,大家对分析型Data Stack的整体提升思路,都是围绕 Source→ELT→Storage→Compute→Application 这整个核心业务流的纵向和横向Workload进行优化。在其中,有的以大一统的平台形式存在,有的则以存储引擎、计算引擎、资源调度等各个小而散的组件存在。但大家优化的主要方向,都趋同于提升PB及以上量级数据的性能。
(a16z总结的Modern Data Infrastructure)
但是,在2022年数据赛道的天价融资项目中,有一个获得了4750万美元A轮的项目确放弃了行业主流方向、放弃了对大数据的追逐、放弃了去卷云端性能优化,转而面向小体量的数据、面向解放Client端的计算资源。这个项目,就是MotherDuck。
MotherDuck的特殊之处,不仅在其避免性能内卷,更在于其鲜明的品牌形象和锋利的价值主张:随处可见的吉祥物Duck、直言”Big Data Is Dead”和“Why Wait For Cloud”的价值主张。
(MotherDuck早期的价值主张)
为什么MotherDuck要抨击行业追逐大数据的做法?为什么MotherDuck又要另辟蹊径选择小数据场景?为什么MotherDuck要选择解放本地计算机的算力?为什么MotherDuck能获得那么高的融资?MotherDuck目前的产品能力到哪种程度了?MotherDuck真正做的事情是不是离其产品定位和目标远景相距甚远?这种模式是否能Copy-to-China?
趁着今年6月MotherDuck开放产品试用的契机,我对其产品能力进行了摸索记录,试图以实际使用体验来回答上述问题。全文共计约11,700字,阅读共需30分钟。以下是本文目录,可根据实际需求食用:
1 Big Data遇到了什么瓶颈?
一提及Big Data,人们总是会提到数据指数级增长。然而,这个老生常谈的观点其实只关注了Big Data背后的Volume和Velocity特征,而对于适应此两维度的过度关注却容易让人忽视了更重要的Value。数据真的都大到以PB级以上的数据集存在吗?从数据中挖掘出价值的瓶颈真的在于数据处理性能吗?
回想我们日常会使用的CSV、EXCEL文件,大多还是以MB甚至KB量级大小存在。放眼到Kaggle这样的世界级数据科学竞赛平台,大部分数据集还是GB及以下的。即使是瞄准B端、以秒级PB级数据处理著称的Google BigQuery,其创始工程师兼产品经理Jordan也曾在一片文章中坦言真实使用情况:
Most of the people using “Big Query” don’t really have Big Data. Most people don’t have that much data. I can say that the vast majority of customers had less than 1TB of data in total data storage. The general feedback we got talking to folks in the industry was that 100 GB was the right order of magnitude for a data warehouse.
数据的分布遵从Zipf Law,即:若以数据量大小为纵轴、以该大小的数据集数量或者拥有该数据量的个人/组织数量为横轴,会发现整体分布呈现幂律分布特征。然而,💡 技术供应商往往挤破头卷性能,仅为头部量级的数据处理提供解决方案,却对长尾的不同量级的数据集的分析处理优化视而不见,这导致能将数据从价值有限的困境中解放出来场景无人问津。
除了幂律分布外,无可否认的是数据始终是分散存储在各个孤立的设备上的。尽管有Snowflake试图用一个完整的平台解决Data Silo的问题,但现实是:一个足够“海纳百川、包容万象”的平台,往往是趋于中庸的,没有一个系统能足够优秀到能以99分的成绩容纳所有的数据分析Workload。当某个Workload重要到其需求无法被一个中规中矩的平台满足时,使用者往往会选择采用一个性价比更高或性能更卷的技术栈,而这又意味着数据的再次打破分散。
目前的大部分Data Stack,在解决“数据孤岛”问题的逻辑上是相同的:我自己建我内部的计算引擎、存储引擎、连接池等各个组件,等到需要分析数据时,我先把各个源头的数据搬运到我自己内部,用我更擅长的数据结构重构后存储,这样我就能用自己的引擎更高更快更强地进行混合查询,让数据联合起来释放更多的价值。
国内外数据行业这么多年来的实践经验告诉我们,这样做是最能解决现实问题的,未来更易于被客户采纳的技术方案应该是围绕这个逻辑进行各个环节单点突破,提供更好的ELT工具、更节省的存储方案、更高效的计算性能、更易于操作的上层应用、更易于理解的可视化。
然而,这就是大家殊途同归的终局了吗?
DuckDB给出了自己不一样的回答。
2 DuckDB
2.1 What Scenario:DuckDB瞄准的是什么场景?
DuckDB由Hannes和Mark两人在荷兰CWI(Python和MonetDB的诞生地)的研究成果转化而来,初衷是提供一个AP版的SQLite,即: 一个面向数据分析场景的嵌入式数据库,让用户能够像调用函数库一样访问数据库。
我有一个亲密的Duck宠物伙伴,所以我也把我热爱的工作成果叫Duck。
2.2 How To Use:DuckDB怎么用?
(1)On-Premises
(2)WSAM
2.3 What About Now:DuckDB现在在做什么?
3 MotherDuck
3.1 Who:MotherDuck背后是哪些人?
产品负责人Tino:此前在BigQuery和YouTube团队担任产品经理,随后去了Snowflake的直接竞争对手Firebolt担任产品VP 负责市场和开发者关系的Ryan:此前在Google、Neo4j、Databricks有累计15年的开发者关系的工作经历,并担任众多科技公司的GTM咨询顾问 创始工程师们:有着Snowflake, Databricks, AWS, Google, Microsoft, Teradata, ElasticSearch, SingleStore, Meta等一众科技巨头的工作经历背书 兼职专家顾问们:有First Round Capital的Myoung做财务支撑,有Looker和Firebolt的Nouras做合作伙伴关系建设,有身为ACM Fellow的CWI数据库教授Peter做“实习生”
3.2 What:MotherDuck目前能帮助用户做什么?
(1)产品架构
Cloud Service:提供身份管理、认证授权、监控审计等安全类功能,提供数据分享功能,并提供Web UI进行访问; Compute:以Serverless方式调用本地和远程的DuckDB实例,调用CPU和内存执行计算任务; Storage:在DuckDB的易失性存储的基础上,提供云端的非易失性存储,支持用户将数据导入至MotherDuck进行持久化存储; Client SDK:除了Web UI访问外,还给Python用户和DuckDB CLI用户提供了SDK,调用时通过MotherDuck的Token进行身份认证后可以直接从该Client访问MotherDuck;并支持在JDBC Driver, Go Driver, DBeaver, Alchemy等终端进行访问;
(2)从Web UI接入
(3)从Client接入
Python:通过 duckdb.connect(‘md:’)
命令唤起身份认证,在MotherDuck验证身份后可以在该Python Client连接到MotherDuckDuckDB:通过 open md
: 命令唤起身份认证,然后在DuckDB CLI对MotherDuck后台进行读写
(4)杀手级功能
用户登录app.motherduck.com后,会在本地浏览器和远程服务器中分别启动DuckDB实例; 当用户从本地文件系统上传文件至浏览器中的DuckDB,并仅对浏览器中的文件进行读写查询、不访问远程文件时,MotherDuck会把查询任务路由回浏览器中的DuckDB,仅调用本地计算机的计算资源;用户无需等待云端服务器,可以直接在断网情况下执行查询任务,并支持跨文件JOIN; 当用户仅访问远程API或S3文件时,MotherDuck会把文件中的数据读到其服务器中的DuckDB,并在不导入文件、转换格式、进行持久化存储的情况下,直接对远程文件进行读写查询;仅调用远程服务器的计算资源,必须在能正常访问MotherDuck的情况下执行查询任务,支持跨文件JOIN; 当用户从本地文件系统或者远程S3、API读取文件并通过建表、更新、插入、替换等命令将文件导入到MotherDuck服务器进行持久化存储时,MotherDuck调用其服务器中的DuckDB;仅调用远程服务器的计算资源,必须在能正常访问MotherDuck的情况下执行查询任务,支持跨文件JOIN; 当用户的查询请求目标对象同时包含本地文件、远程API或S3文件、MotherDuck存储的文件时,MotherDuck对查询语句解析和优化后,将不同的子任务拆分给本地浏览器和远程服务器中的DuckDB实例,同时调用本地和远程的计算资源;
3.3 Go-To-Market:MotherDuck团队如何把产品推向市场?
(1)价值主张
通过扩充计算节点进行横向扩缩容是昂贵而缓慢的,我们要做单节点的纵向扩缩容 大家手中的笔记本可以比云端服务器更快返回结果,为什么还要将计算完全交给云呢? 大数据已死,简单数据才是未来 DuckDB很赞,我们为其充电
DuckDB解放的是大家手中计算机的算力,我们在其基础上还提供与云端算力协同的混合计算 DuckDB对开发和测试环境是绝佳选择,我们通过云的特性让其还能用于生产环境 DuckDB是单纯的嵌入式数据库,我们在其基础上还可以做数据分析合作
(2)社区运营
(3)生态合作
提前给大数据判了死刑的:Big Data Is Dead 道出行业饱受数据库之苦的:Why Does Everybody Hate Databases
(4)新用户注册
3.4 Future:MotherDuck未来可能会往什么方向发展?
(1)优化方向
站在产品管理的视角,我觉得MotherDuck会在接下来的一年在几个方向发力:
AI支持:以自然语言为交互方式,让AI自动写SQL等查询语句、Python调用等语句,增加AI的自动问题诊断能力; PLUS功能支持:增加Query Profile, Log Audit, 容灾备份等用于生产环境会考虑的附加功能; 多数据源兼容性: 除了支持AWS S3外,扩展支持至其他S3协议兼容的远程对象存储; 除了Excel, CSV, JSON, Parquet, Arrow, Pandas文件和SQLite, Postgre数据库外,增加支持AVRO, ORC等文件,增加支持MySQL, Oracle, MariaDB, Spanner等高采纳度的数据库; 除了现有的SDK和Driver,增加MotherDuck特有的CLI, Driver, Connector; 商业化:待产品从Beta转GA,给免费版设置使用量上限,超出后进行按量计费 Cloud Service层:为团队或企业需要增强的Security和组织管理功能为收费项; Compute层:以每次查询任务的Query复杂度、处理的数据流量、调用次数、Query运行时长等为计费项; Storage层:则以转存的持久化存储的数据量为计费项; 计费单价标准则参照BigQuery或者Snowflake的定价水平; Go-To-Market:
在现有的优秀的文档工作基础上,生产更多的视频、网络研讨会等产品介绍和操作指南物料;
发表更多点明Big Data领域大家视而不见问题的文章,让潜在用户正视现有解决方案的短板;
充分挖掘社区用户的传播潜力,设置激励计划,以Produc-Led-Growth完成第一批C端增长;
从toC逐渐转为toSMB,增加企业级功能,增加相关合规认证; 以混合云或者云上云下协同为目标场景; 不仅是挖掘PC端算力的剩余价值,还像SQLite一样充分释放移动端设备的潜力; 不与Snowflake,BigQuery,Redshift等既有的云数仓巨头竞争同一批客户,而是以互补场景作为解决方案共同加速商业化,甚至是在一定阶段被收购;
(2)潜在问题
C端用户的付费意愿和付费能力有多强?
虽然美国有比中国更良好的软件付费习惯,但是C端整体上比B端的整体潜在市场小很多。如果一直持续瞄准社区用户,是否能创造足够的营收?
C端用户群是否足够大?
虽然Figma成功证明了C端用户的工具付费能力,但Figma的潜在用户群比MotherDuck是要大的。
例如,一个互联网产品常见的最小团队构成,是1个产品经理+1个前端工程师+3个后端工程师+1个设计师,使用Figma的虽然主要是产品经理和设计师,但工程师也是要作为Figma的用户读取其他用户分享的设计稿,即:Figma面向的用户是整个产研团队。
但是,在一个10个人的互联网产研团队中,只会有1名数据分析师;在一个有30名销售和售前架构的事业部中,只会有1个销售运营;而MotherDuck面向的用户,不是整个团队,而是团队中需要处理数据的占少部分的几个人。
后期面向B端时,是否有足够的收费说服力?
BigQuery和Snowflake目前的客户群分布说明了:云数仓的客户主体还是SMB而不是大KA。而当MotherDuck面向B端进行商业化时,目标群体更可能是现有云数仓供应商SMB客户的子集。
对于这些客户而言,云端的Server使用都不够充分,解放Client端算力的利益点则并不成立。
4 Copy To China?
时机不对
Snowflake早期的快速增长,是伴随着C端互联网的爆发而来的,数据天然就在云上。但目前,国内已经经历了社交、电商、游戏的几轮热潮,新的增长点一是AI、二是传统企业数字化,而后者数据不是“生于云、长于云”,而是要从云下搬运到云上。无论是AI还是上云,这些不是MotherDuck模式天然适合之处。
此外,出于安全合规等考虑,国内客户在面对要将数据托管到云上的场景比以前更加谨慎,这会导致云数据平台的售前阶段会无比漫长。
国内C端用户没有付费意愿、B端采购中终端用户又没有话语权
国内不仅是B端客户的付费意愿、付费能力仅有美国的20%不到,C端用户对一个好工具、好产品的付费意愿非常薄弱。客单价最高的项目,往往是对终端用户没有多大帮助、但对B端领导层会有功绩贡献的项目,例如政府的信息化建设。
而DuckDB的开源性质也造成了一个尴尬的局面:对于技术能力够强的国内团队,将开源转为自建、而不是购买服务有着非常悠久的“传统”,当DuckDB出圈后,很可能是因其开源属性而被“白嫖”,而不是转化为商业化收入。
国内IaaS供应商的产品能力不足
相较于AWS,国内IaaS供应商更像是在扮演IDC2.0,导致PaaS和SaaS层开发团队无法充分信任底层的安全能力和不同场景的适配性。
如果要在国内创建一个非常超前的产品,完全把复杂性退回给工程团队内部、对用户仅暴露最简单易用的能力,那么整体的工程难度是要远大于国外的软件开发团队的。很可能原本非常优秀的设计,因为底层的一些基本逻辑而无法实现。
国内的溢价收费不成立
以公有云厂商的对象存储产品为例,国外定价是$20/TB·月,国内是¥120/TB·月,定价接近。但Snowflake转卖AWS S3存储可以直接以2x溢价卖,即以$40/TB·月的单价进行售卖,但国内云厂商的PaaS产品则只能以1x ~ 1.2x的定价进行售卖,没有溢价能力。
对于PaaS层的Serverless产品,由于已经是让利给用户、不强制性收取月付租金,如果不能溢价转卖IaaS的话,很难把收入给做到一定规模。
中美之间有发展差
中美的Data Stack市场有着5年以上的发展落差:当Oracle占据阿里数据库很多年后的2011年,才有OceanBase的第一个生产环境;在Cloudera上市后的5年,星环才申请上市;在Snowflake成立10年后的2022年,SelectDB才成立。
目前,国内的Data Stack市场还处于围绕Serverless和Copy Snowflake提供更好用的SaaS/PaaS产品,而距离简单易用、适用场景广泛还有不小差距,最高优先级还是在云端和私有化部署,而不是MotherDuck定位的云上云下协同。
5 Summary
Reference
CMU Database Group. Advanced Database Systems: History of Databases. 2023-01. https://www.youtube.com/watch?v=LWS8LEQAUVc Matt Bornstein, Jennifer Li, and Martin Casado. Emerging Architectures for Modern Data Infrastructure. 2020-12. https://a16z.com/2020/10/15/emerging-architectures-for-modern-data-infrastructure/ MotherDuck. MotherDuck Raises $47.5 Million to Make Analytics Fun, Frictionless and Ducking Awesome. https://motherduck.com/blog/announcing-series-seed-and-a/ MotherDuck. Website. https://motherduck.com/ Wayback Machine. Motherduck Website. 2022-11. https://web.archive.org/web/20221115150849/https://motherduck.com/ MotherDuck. Announcing MotherDuck: Hybrid Execution Scales DuckDB from Your Laptop into the Cloud. 2023-06. https://motherduck.com/blog/announcing-motherduck-duckdb-in-the-cloud/ Jordan Tigani. Big Data Is Dead. 2023-02. https://motherduck.com/blog/big-data-is-dead/ DuckDB. Website. https://duckdb.org/ Hannes Mühleisen. LinkedIn Profile. https://www.linkedin.com/in/hfmuehleisen/ Mark Raasveldt. LinkedIn Profile. https://www.linkedin.com/in/mark-raasveldt-256b9a70/ CMU Database Group. Database of Databases. https://dbdb.io/ DB-Engines. DB-Engines Ranking. https://db-engines.com/en/ranking Databricks. Data + AI Summit Keynote: DuckDB. 2023-06. https://www.youtube.com/watch?v=GaHWuQ_cBhA 天舟. MotherDuck: 从SQLite走向数据界的Docker. 2022-11. https://mp.weixin.qq.com/s/Tm6aR_anocCemwhiTMH0iQ DuckDB. Documentation. https://duckdb.org/docs/ DuckDB. Blog Archive. https://duckdb.org/news/ CMU Database Group. Advanced Database Systems: DuckDB. 2023-04. https://www.youtube.com/watch?v=bZOvAKGkzpQ CMU Database Group. Quarantine Database Tech Talks: DuckDB. 2020-04. https://www.youtube.com/watch?v=PFUZlNQIndo Star-history. DuckDB 2019-2023. https://star-history.com/#duckdb/duckdb&Date DB-Engines. Trend of DuckDB Popularity. 2021-2023. https://db-engines.com/en/ranking_trend/system/DuckDB DuckDB Labs. Website. https://duckdblabs.com/ DuckDB. Discord Community. https://discord.com/invite/tcvwpjfnZx MotherDuck. Company. https://motherduck.com/company/ Jordan Tigani. Linkedin Profile. https://www.linkedin.com/in/jordantigani/ Tino Tereshko. Linkedin Profile. https://www.linkedin.com/in/valentinotereshko/ Ryan Boyd. Linkedin Profile. https://www.linkedin.com/in/ryguyrg/ MotherDuck. MotherDuck in 100 Seconds. 2023.06. https://www.youtube.com/watch?v=NQgHrszyQWY MotherDuck Docs. Architecture and Capabilities. https://motherduck.com/docs/architecture-and-capabilities MotherDuck Docs. MotherDuck UI Quick Tour. https://motherduck.com/docs/getting-started/motherduck-quick-tour MotherDuck Docs. Using the DuckDB CLI. https://motherduck.com/docs/getting-started/connect-query-from-duckdb-cli MotherDuck Docs. Using Python. https://motherduck.com/docs/category/using-python MotherDuck Docs. End to End Tutorial. https://motherduck.com/docs/getting-started/e2e-tutorial MotherDuck Docs. Release Notes. https://motherduck.com/docs/release-notes/ MotherDuck. Slack Community. https://app.slack.com/client/T058PEMPLPM/C058PEMQATV MotherDuck. Blog. https://motherduck.com/blog/